package com.ruoyi.platform.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 营销活动管理对象 marketing_activities
 * 
 * @author ruoyi
 * @date 2025-10-21
 */
public class MarketingActivities extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 活动ID */
    @Excel(name = "活动ID")
    private String activityId;

    /** 活动编码 */
    @Excel(name = "活动编码")
    private String activityCode;

    /** 活动名称 */
    @Excel(name = "活动名称")
    private String activityName;

    /** 活动类型 */
    @Excel(name = "活动类型")
    private Long activityType;

    /** 范围类型 */
    @Excel(name = "范围类型")
    private Long scopeType;

    /** 范围ID */
    @Excel(name = "范围ID")
    private String scopeIds;

    /** 发起方 */
    @Excel(name = "发起方")
    private Long initiatorType;

    /** 发起方ID */
    @Excel(name = "发起方ID")
    private String initiatorId;

    /** 活动规则 */
    @Excel(name = "活动规则")
    private String rules;

    /** 活动总预算 */
    @Excel(name = "活动总预算")
    private BigDecimal budgetTotal;

    /** 已使用预算 */
    @Excel(name = "已使用预算")
    private BigDecimal budgetUsed;

    /** 补贴比例 */
    @Excel(name = "补贴比例")
    private BigDecimal subsidyRatio;

    /** 目标用户 */
    @Excel(name = "目标用户")
    private Long targetUserType;

    /** 每用户限制次数 */
    @Excel(name = "每用户限制次数")
    private String userLimitCount;

    /** 每日限制次数 */
    @Excel(name = "每日限制次数")
    private String dailyLimitCount;

    /** 最低订单金额 */
    @Excel(name = "最低订单金额")
    private BigDecimal minOrderAmount;

    /** 最高优惠金额 */
    @Excel(name = "最高优惠金额")
    private BigDecimal maxDiscountAmount;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 展示开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "展示开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date displayStartTime;

    /** 优先级 */
    @Excel(name = "优先级")
    private String priority;

    /** 是否可叠加 */
    @Excel(name = "是否可叠加")
    private Long isStackable;

    /** 状态 */
    @Excel(name = "状态")
    private Long status;

    /** 审批状态 */
    @Excel(name = "审批状态")
    private Long approvalStatus;

    /** 审批人ID */
    @Excel(name = "审批人ID")
    private String approvalBy;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date approvalAt;

    /** 审批备注 */
    @Excel(name = "审批备注")
    private String approvalRemark;

    /** 活动横幅图片 */
    @Excel(name = "活动横幅图片")
    private String bannerImage;

    /** 活动描述 */
    @Excel(name = "活动描述")
    private String description;

    /** 活动条款 */
    @Excel(name = "活动条款")
    private String termsConditions;

    /** 参与人数 */
    @Excel(name = "参与人数")
    private String participantCount;

    /** 产生订单数 */
    @Excel(name = "产生订单数")
    private String orderCount;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 删除时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "删除时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deletedAt;

    public void setActivityId(String activityId) 
    {
        this.activityId = activityId;
    }

    public String getActivityId() 
    {
        return activityId;
    }

    public void setActivityCode(String activityCode) 
    {
        this.activityCode = activityCode;
    }

    public String getActivityCode() 
    {
        return activityCode;
    }

    public void setActivityName(String activityName) 
    {
        this.activityName = activityName;
    }

    public String getActivityName() 
    {
        return activityName;
    }

    public void setActivityType(Long activityType) 
    {
        this.activityType = activityType;
    }

    public Long getActivityType() 
    {
        return activityType;
    }

    public void setScopeType(Long scopeType) 
    {
        this.scopeType = scopeType;
    }

    public Long getScopeType() 
    {
        return scopeType;
    }

    public void setScopeIds(String scopeIds) 
    {
        this.scopeIds = scopeIds;
    }

    public String getScopeIds() 
    {
        return scopeIds;
    }

    public void setInitiatorType(Long initiatorType) 
    {
        this.initiatorType = initiatorType;
    }

    public Long getInitiatorType() 
    {
        return initiatorType;
    }

    public void setInitiatorId(String initiatorId) 
    {
        this.initiatorId = initiatorId;
    }

    public String getInitiatorId() 
    {
        return initiatorId;
    }

    public void setRules(String rules) 
    {
        this.rules = rules;
    }

    public String getRules() 
    {
        return rules;
    }

    public void setBudgetTotal(BigDecimal budgetTotal) 
    {
        this.budgetTotal = budgetTotal;
    }

    public BigDecimal getBudgetTotal() 
    {
        return budgetTotal;
    }

    public void setBudgetUsed(BigDecimal budgetUsed) 
    {
        this.budgetUsed = budgetUsed;
    }

    public BigDecimal getBudgetUsed() 
    {
        return budgetUsed;
    }

    public void setSubsidyRatio(BigDecimal subsidyRatio) 
    {
        this.subsidyRatio = subsidyRatio;
    }

    public BigDecimal getSubsidyRatio() 
    {
        return subsidyRatio;
    }

    public void setTargetUserType(Long targetUserType) 
    {
        this.targetUserType = targetUserType;
    }

    public Long getTargetUserType() 
    {
        return targetUserType;
    }

    public void setUserLimitCount(String userLimitCount) 
    {
        this.userLimitCount = userLimitCount;
    }

    public String getUserLimitCount() 
    {
        return userLimitCount;
    }

    public void setDailyLimitCount(String dailyLimitCount) 
    {
        this.dailyLimitCount = dailyLimitCount;
    }

    public String getDailyLimitCount() 
    {
        return dailyLimitCount;
    }

    public void setMinOrderAmount(BigDecimal minOrderAmount) 
    {
        this.minOrderAmount = minOrderAmount;
    }

    public BigDecimal getMinOrderAmount() 
    {
        return minOrderAmount;
    }

    public void setMaxDiscountAmount(BigDecimal maxDiscountAmount) 
    {
        this.maxDiscountAmount = maxDiscountAmount;
    }

    public BigDecimal getMaxDiscountAmount() 
    {
        return maxDiscountAmount;
    }

    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }

    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }

    public void setDisplayStartTime(Date displayStartTime) 
    {
        this.displayStartTime = displayStartTime;
    }

    public Date getDisplayStartTime() 
    {
        return displayStartTime;
    }

    public void setPriority(String priority) 
    {
        this.priority = priority;
    }

    public String getPriority() 
    {
        return priority;
    }

    public void setIsStackable(Long isStackable) 
    {
        this.isStackable = isStackable;
    }

    public Long getIsStackable() 
    {
        return isStackable;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setApprovalStatus(Long approvalStatus) 
    {
        this.approvalStatus = approvalStatus;
    }

    public Long getApprovalStatus() 
    {
        return approvalStatus;
    }

    public void setApprovalBy(String approvalBy) 
    {
        this.approvalBy = approvalBy;
    }

    public String getApprovalBy() 
    {
        return approvalBy;
    }

    public void setApprovalAt(Date approvalAt) 
    {
        this.approvalAt = approvalAt;
    }

    public Date getApprovalAt() 
    {
        return approvalAt;
    }

    public void setApprovalRemark(String approvalRemark) 
    {
        this.approvalRemark = approvalRemark;
    }

    public String getApprovalRemark() 
    {
        return approvalRemark;
    }

    public void setBannerImage(String bannerImage) 
    {
        this.bannerImage = bannerImage;
    }

    public String getBannerImage() 
    {
        return bannerImage;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setTermsConditions(String termsConditions) 
    {
        this.termsConditions = termsConditions;
    }

    public String getTermsConditions() 
    {
        return termsConditions;
    }

    public void setParticipantCount(String participantCount) 
    {
        this.participantCount = participantCount;
    }

    public String getParticipantCount() 
    {
        return participantCount;
    }

    public void setOrderCount(String orderCount) 
    {
        this.orderCount = orderCount;
    }

    public String getOrderCount() 
    {
        return orderCount;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setDeletedAt(Date deletedAt) 
    {
        this.deletedAt = deletedAt;
    }

    public Date getDeletedAt() 
    {
        return deletedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("activityId", getActivityId())
            .append("activityCode", getActivityCode())
            .append("activityName", getActivityName())
            .append("activityType", getActivityType())
            .append("scopeType", getScopeType())
            .append("scopeIds", getScopeIds())
            .append("initiatorType", getInitiatorType())
            .append("initiatorId", getInitiatorId())
            .append("rules", getRules())
            .append("budgetTotal", getBudgetTotal())
            .append("budgetUsed", getBudgetUsed())
            .append("subsidyRatio", getSubsidyRatio())
            .append("targetUserType", getTargetUserType())
            .append("userLimitCount", getUserLimitCount())
            .append("dailyLimitCount", getDailyLimitCount())
            .append("minOrderAmount", getMinOrderAmount())
            .append("maxDiscountAmount", getMaxDiscountAmount())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("displayStartTime", getDisplayStartTime())
            .append("priority", getPriority())
            .append("isStackable", getIsStackable())
            .append("status", getStatus())
            .append("approvalStatus", getApprovalStatus())
            .append("approvalBy", getApprovalBy())
            .append("approvalAt", getApprovalAt())
            .append("approvalRemark", getApprovalRemark())
            .append("bannerImage", getBannerImage())
            .append("description", getDescription())
            .append("termsConditions", getTermsConditions())
            .append("participantCount", getParticipantCount())
            .append("orderCount", getOrderCount())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("deletedAt", getDeletedAt())
            .toString();
    }
}
